﻿using System;
using ChangePlaybackDevice.BC;
using NLog;
using System.Text;
using System.Windows.Forms;

namespace ChangePlaybackDevice
{
	class Program
	{
		/// <summary>
		/// Logger
		/// </summary>
		private static Logger log = LogManager.GetCurrentClassLogger();

		/// <summary>
		/// Main method.
		/// </summary>
		/// <param name="args"></param>
		static void Main(string[] args)
		{
			// 引数チェック.
			if (args.Length != 1)
			{
				Usage();
				return;
			}

			// 引数を変換
			int index = 0;
			if (!int.TryParse(args[0], out index))
			{
				Usage();
				return;
			}

			// デバイス選択の実施
			try
			{
				PlaybackDeviceService service = new PlaybackDeviceService();
				service.Change(index);
				log.Debug("Success!");
			}
			catch (Exception ex)
			{
				log.Error(ex.Message);
				MessageBox.Show(ex.Message, "設定に失敗しました", MessageBoxButtons.OK, MessageBoxIcon.Error);
			}
		}

		/// <summary>
		/// 使用方法を表示する.
		/// </summary>
		public static void Usage()
		{
			StringBuilder sb = new StringBuilder();
			sb.AppendLine(@"使用方法:");
			sb.AppendLine(@"  ChangePlaybackDevice.exe <deviceNo>");
			sb.AppendLine(@"");
			sb.AppendLine(@"引数:");
			sb.AppendLine(@"  deviceNo");
			sb.AppendLine(@"      既定にする再生デバイス番号を指定します。（必須項目）");
			sb.AppendLine(@"      再生デバイス番号は、1～5までの数値で指定出来ます。");
			sb.AppendLine(@"      再生デバイスリストの上から順に1～5の番号になります。");
			sb.AppendLine(@"");
			sb.AppendLine(@"使用例:");
			sb.AppendLine(@"  > ChangePlaybackDevice    … 使用方法を表示。");
			sb.AppendLine(@"  > ChangePlaybackDevice 1  … 1番目を既定に設定。");
			sb.AppendLine(@"  > ChangePlaybackDevice 5  … 5番目を既定に設定。");

			MessageBox.Show(sb.ToString(), "使用方法", MessageBoxButtons.OK, MessageBoxIcon.Information);
		}
	}
}
